package com.osdp.uc.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.osdp.uc.dto.OrganizationDTO;
import com.osdp.uc.entity.UcOrganization;
import com.osdp.uc.vo.UcOrganizationVo;

import java.util.List;
import java.util.Map;

public interface IUcOrganizationService extends IService<UcOrganization> {
    /**
     * 组织机构分页
     * @param org
     * @param page
     * @return
     */
    IPage<UcOrganizationVo> pageList(UcOrganizationVo org, Page<UcOrganization> page);

    /**
     * 异步树形结构
     * @param parameters
     * @return List<UcOrganizationVo>
     */
    List<UcOrganizationVo> queryOrgTree(Map parameters);

    /**
     * 根据父ID查询所有子节点，按部门类型过滤
     * @param parentId String
     * @param orgTypeId String
     * @return
     */
    List<UcOrganization> queryByParentId(String parentId,String orgTypeId);

    /**
     * 根据ID查询对象
     * @param id String
     * @return
     */
    UcOrganizationVo getByOrgId(String id);

    /**
     * 新增信息
     * @param organizationVo UcOrganizationVo
     * @return
     */
    UcOrganizationVo insertOrganization(UcOrganizationVo organizationVo);

    /**
     * 修改信息
     * @param organizationVo UcOrganizationVo
     * @return
     */
    UcOrganizationVo updateOrganization(UcOrganizationVo organizationVo);

    /**
     * 根据ID删除信息
     * @param id String
     * @return
     */
    boolean deleteOrganization(String id);

    /**
     * 根据id批量删除
     * @param ids List<String>
     * @return
     */
    boolean deleteBatcah(List<String> ids);

    /**
     * 根据用户ID得到相应的组织机构
     * @param userId String
     * @return List<OrganizationVo>
     */
    List<OrganizationDTO> queryOrganizationByUserId(String userId);
}
